﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.Pages
{
    public partial class TarifasCopiar : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulaDropEstacao(sender, e);
                PopulaDropPeriodo(sender, e);
            }
        }

        #region Popular Dados
        
        protected void PopulaDropEstacao(object sender, EventArgs e)
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DropEstacao.DataSource = n.S_Mercado_Estacao.ToList();
                    DropEstacao.DataValueField = "S_mercado_estacao_id";
                    DropEstacao.DataTextField = "S_mercado_estacao_nome";
                    DropEstacao.DataBind();

                }
            }
            catch (Exception ex)
            {
                lblCopiarTarifas.Text = "Erro. " + ex.Message;
            }
        }

        protected void PopulaDropPeriodo(object sender, EventArgs e)
        {
            try
            {
                PeriodosDAL p = new PeriodosDAL();

                DropPeriodos.DataSource = p.ListarTodos(Convert.ToInt32(Session["Sid"]));

                DropPeriodos.DataValueField = "S_merc_periodo_id";
                DropPeriodos.DataTextFormatString = ("{0:dd/MM/yyy}");
                DropPeriodos.DataTextField = "S_merc_periodo_from";
                DropPeriodos.DataBind();

            }
            catch (Exception ex)
            {
                lblCopiarTarifas.Text = ex.Message;
            }
        }

        #endregion

        protected void SalvarTarifas(object sender, EventArgs e)
        {
            BuscaTarifas_Salva();
        }

        protected void BuscaTarifas_Salva()
        {
            try
            {
                TarifaDAL t = new TarifaDAL();
                MealDAL m = new MealDAL();

                int IdPeriodo = SalvarPeriodo();

                foreach (S_Mercado_Tarifa p in t.ListarTodosLista(Convert.ToInt32(DropPeriodos.SelectedValue)))
                {
                    S_Mercado_Tarifa s = new S_Mercado_Tarifa();

                    if (p.S_merc_tarif_tarifa != null)
                    {
                        s.S_merc_tarif_tarifa = Convert.ToDecimal(p.S_merc_tarif_tarifa);
                        s.S_merc_tarif_tarifa_total = Convert.ToDecimal(p.S_merc_tarif_tarifa_total);
                        s.S_merc_tarif_porc_taxa = Convert.ToInt32(p.S_merc_tarif_porc_taxa);
                        s.S_merca_tarif_porc_imposto = Convert.ToInt32(p.S_merca_tarif_porc_imposto);
                    }
                    else
                    {
                        s.S_merc_tarif_status_id = Convert.ToInt32(p.S_merc_tarif_status_id);
                    }

                    s.Tipo_room_id = Convert.ToInt32(p.Tipo_room_id);
                    s.Tarif_categoria_id = Convert.ToInt32(p.Tarif_categoria_id);
                    s.S_mercado_tipo_tarifa_id = Convert.ToInt32(p.S_mercado_tipo_tarifa_id);
                    s.S_merc_periodo_id = IdPeriodo;

                    MercadoTarifaDAL mtd = new MercadoTarifaDAL();

                    mtd.Salvar(s);
                }

                foreach (S_Mercado_Meal mm in m.ListarTodosLista(Convert.ToInt32(DropPeriodos.SelectedValue)))
                {
                    S_Mercado_Meal s = new S_Mercado_Meal();

                    if (mm.S_merc_meal_tarifa != null)
                    {
                        s.S_merc_meal_tarifa = Convert.ToDecimal(mm.S_merc_meal_tarifa);
                    }
                    else
                    {
                        s.S_merc_tarif_status_id = mm.S_merc_tarif_status_id;
                    }

                    s.S_meal_id                 = mm.S_meal_id;
                    s.S_merc_periodo_id         = IdPeriodo;
                    s.S_merc_meal_tarifa_total  = mm.S_merc_meal_tarifa_total; 
                    s.S_merca_meal_porc_imposto = mm.S_merca_meal_porc_imposto;
                    s.S_merc_meal_porc_taxa     = mm.S_merc_meal_porc_taxa;

                    m.Salvar(s);
                }

                lblCopiarTarifas.Text = "Tarifas copiadas com sucesso.";
            }
            catch (Exception ex)
            {
                lblCopiarTarifas.Text = ex.Message;
            }
        }

        public int SalvarPeriodo()
        {
            PeriodosDAL p = new PeriodosDAL();
            S_Mercado_Periodo a = p.ObterPorIdMercado(Convert.ToInt32(DropPeriodos.SelectedValue));
            S_Mercado_Periodo mp = new S_Mercado_Periodo();

            try
            {
                mp.S_merc_periodo_from = Convert.ToDateTime(from.Text);
                mp.S_merc_periodo_to = Convert.ToDateTime(to.Text);
                mp.S_id = a.S_id;
                mp.S_mercado_estacao_id = Convert.ToInt32(DropEstacao.SelectedValue);
                mp.BaseTarifaria_id = a.BaseTarifaria_id;
                mp.Mercado_id = a.Mercado_id;
                mp.Moeda_id = a.Moeda_id;

                p.Salvar(mp);

                return Convert.ToInt32(mp.S_merc_periodo_id);
            }
            catch (Exception ex)
            {
                lblCopiarTarifas.Text = ex.Message;
                return 0;
            }
        }

    }
}